/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.user.service;


import net.siufung.market.base.user.mapper.entity.User;
import net.siufung.market.base.user.mapper.entity.UserDetail;
import net.siufung.mybatis.base.BaseService;


/**
 * 系统用户表 数据服务
 *
 * @author 陈建峰
 * @since 2022-07-05 16:14:50
*/
public interface IUserService extends BaseService<User> {

    /**
     * 保存用户和用户角色信息
     * @param user 用户
     * @param roleIds 用户角色ID列表
     * @return boolean
     */
    boolean save(User user, Integer[] roleIds);

    /**
     * 保存用户和用户角色信息
     * @param user 用户
     * @param userDetail 用户详细信息
     * @param roleIds 用户角色ID列表
     * @return boolean
     */
    boolean save(User user, UserDetail userDetail, Integer[] roleIds);

    /**
     * 修改用户和用户角色信息
     * @param user 用户
     * @param roleIds 用户角色ID列表
     * @return boolean
     */
    boolean updateById(User user, Integer[] roleIds);

    /**
     * 修改用户和用户角色信息
     * @param user 用户
     * @param userDetail 用户详细信息
     * @param roleIds 用户角色ID列表
     * @return boolean
     */
    boolean updateById(User user, UserDetail userDetail, Integer[] roleIds);

    /**
     * 修改用户和用户角色信息
     * @param user 用户
     * @param userDetail 用户详细信息
     * @return boolean
     */
    boolean updateById(User user, UserDetail userDetail);

    /**
     * 修改用户密码
     * @param userId 用户
     * @param loginPasswd 用户密码
     * @return true/false
     */
    boolean updatePasswd(Integer userId, String loginPasswd);

    /**
     * 修改用户登录信息
     * @param userId 用户
     * @param loginLastIp 用户登录Id
     *  @param loginLastDate 用户登录时间
     * @return true/false
     */
    boolean updateLoginInfo(Integer userId, String loginLastIp, String loginLastDate);

    /**
     * 用户初始化
     * @param userId 用户Id
     * @return true/false
     */
    boolean initialize(Integer userId);
}